Weed out empty features from the registry
authorAlex Crichton <alex@alexcrichton.com>
Tue, 21 Jul 2015 17:16:15 +0000 (10:16 -0700)
committerAlex Crichton <alex@alexcrichton.com>
Tue, 21 Jul 2015 17:35:13 +0000 (10:35 -0700)
commitdffb5078f26236eb97c3942bce0ea139932a736e
tree25e3230e132f828c257a3d32594b0ee13b6a1bde
parent740e250c14714845c2e2041a244ec44120f00306
Weed out empty features from the registry

It looks like the empty string is leaking in as a feature to all crates being
published on crates.io unintentionally. This means that each dependency edge
activates the feature `""`. This in turn confuses the resolution process quite a
bit, causing it to be far more recursive than it should be.

The empty feature, `""`, is weeded out during activation of features but it's
never explicitly activated. This means that each new dependency we see has one
requested feature (the empty one) with no activated features (as it doesn't have
any). This ends up causing us to recurse to attempt to reactivate the
dependency. This extreme recursion ended up blowing the stack on some smaller
crates and this commit fixes that.
src/cargo/sources/registry.rs